Java™ is a programming language that, at the source code level, is similar to object oriented programming languages such as C++. Java language source code is compiled into an intermediate representation based on a plurality of “bytecodes” that define specific actions. In some implementations, the bytecodes are further compiled to machine language for a particular processor. In order to speed the execution of Java language programs, some processors are specifically designed to execute some of the Java bytecodes directly. Many times, a processor that directly executes Java bytecodes is paired with a general purpose processor to accelerate Java program execution.
To aid in the programming of Java, groups of related classes are bundled into class libraries, which are also referred to as a packages. Among other uses, packages enable efficient code reusability. A Java Application Programming Interface (API) comprises a plurality of such packages. One exemplary package, the Java language package (java.lang), comprises Java classes such as the object class (java.lang.object) that correspond to a set of classes that enable the execution of Java bytecodes. The Java language classes are provided by the Java API and are unique within any given Java platform. Stated otherwise, each Java API is targeted to only one configuration of a Java Virtual Machine (JVM). It would be desirable to define a methodology that would allow at least some JVM compatibility to any API configuration.